#pragma once

#include <iostream>
#include <vector>
#include <semaphore.h>
#include <pthread.h>


const static int defaultcap = 5;
template<class T>
class RingQueue
{
public:
    RingQueue(int cap = defaultcap)
        :_max_cap(cap), _c_sem(0), _p_step(0)
    {
        // 初始化信号量
        sem_init()
    }
    ~RingQueue()
    {}

    void Pop(T* out)
    {}

    void Push(const T& in)
    {}
private:
    std::vector<T> _ringQueue; // 数组模拟环形队列
    int _max_cap; // 队列容量

    // 消费者，生产者下标
    int _c_step;
    int _p_step;

    // 信号量
    sem_t _data_sem; // 消费者关心
    sem_t _space_sem; // 生产者关心
};